package edu.psu.geovista.app.plot.ruler;

import edu.psu.geovista.app.plot.axis.Range;
import edu.psu.geovista.app.plot.ruler.tick.Tick;

import java.awt.*;

/*
 * GeoVISTA Center (Penn State, Dept. of Geography)
 * Copyright (c), 2003-2011,  Jin Chen and Alan M. MacEachren, GeoVISTA Center, Penn State University
 * Licensed under Simplified BSD License
 *
 *
 * @author: jin Chen 
 * @date: Jan 25, 2005$
 * @version: 1.0
 */

public interface Ruler {
    public static final String PROPERTY_TICKRANGE="TR";
    public static final String PROPERTY_ORIENT="or";
    public static final String PROPERTY_LOCATION="loc";
    public static final String PROPERTY_LENGTH="len";
    public static final String PROPERTY_TICKVALUES="tvs";

    int HORIZONTAL=1;
    int VERTICAL=2;
    int ASCEND=3;
    int DESCEND=4;



    int getGraphicValueOf(float realValue);

    float getValueOf(float gv);

    float getValueOfchange(float deltaV);

    public void setTickRange(Range range);
    public Range getTickRange();
    public void setLength(int length);
    public  int getLength();


    public void paintComponent(Graphics g);

    public void setLocation(Point location);
    public Point getLocation();

    public void setColor(Color color);
    public Color getColor();




    public int getOrient();
    public boolean isAscend() ;
    public void setOrient(int orient);



    public float getKs();

    //draw value of ticks
    public void setShowLabel(boolean showLabel);

    public int getLabelScale();

    public void setLabelScale(int labelScale);
    public boolean isShowLabel();
    public void setShowTick(boolean drawTick);

    public int getFormat();

    public void setFormat(int format);

    public boolean isShowTick();

    public BasicStroke getStroke();
    //width of ruler GUI
    public void setStroke(BasicStroke stroke);


    public void setLabelColor(Color labelColor);

    public void setLabelFont(Font labelFont);

    public Font getLabelFont();

    public Color getLabelColor();
     public RulerUI getUI() ;

    public void setUI(RulerUI ui) ;

    public float[] getTicksvalue();
     public void setTicksvalue(float[] ticksvalue) ;
     public void setNumOfSection(int numOfSection);
     public Tick[] getTicks();
    public void setTicklength(int ticklength);

}
